package vista.objetos;

import logica.Atributo;
import logica.AtributoDerivado;
import logica.persistencia.AtributoGraficableCalculoPersistente;
import logica.persistencia.GraficableConEtiquetaPersistente;

public class AtributoGraficableCalculo extends AtributoGraficable{

	public AtributoGraficableCalculo(Atributo atributo) {
		super(atributo);
		
		this.getEtiqueta().setText(generarTexto(atributo));
		this.getEtiqueta().setSize(this.getEtiqueta().getMinimumSize());
	}

	private String generarTexto(Atributo atributo)
	{
		AtributoDerivado atributoD = (AtributoDerivado) atributo;
		String texto = "<html> <center>";
		texto += (atributoD.getNombre());
		texto += ("<br> <em>");
		texto += (atributoD.getExpresion());
		texto += ("</em> </center></html>");

		return texto;
	}

	@Override
	public void dibujarse(Object areaDeDibujo) 
	{// no sabemos en q deberia ser distinto
		super.dibujarse(areaDeDibujo);
	}

	@Override
	public AtributoGraficable copiarse() 
	{
		AtributoGraficableCalculo atributo = new AtributoGraficableCalculo(getAtributo());
		atributo.getPunto().setLocation(getPunto());
		atributo.getEtiqueta().setLocation(this.getEtiqueta().getLocation());

		return atributo;
	}

	@Override
	public GraficableConEtiquetaPersistente getGraficableConEtiquetaPersistente() {
		return new AtributoGraficableCalculoPersistente(this);
	}
	
	public boolean equals(Object atributo)
	{
		if (this.getClass().getName().compareToIgnoreCase(atributo.getClass().getName())!=0)
			return false;
		
		AtributoGraficableCalculo atr = (AtributoGraficableCalculo) atributo;
		
		//TODO falta ver lo del tipo
		return (atr.getAtributo().equals(this.getAtributo()));
		
	}
}
